<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>预定义常量</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="memcached.resources.html">资源类型</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="memcached.expiration.html">超时时间</a></div>
 <div class="up"><a href="book.memcached.html">Memcached</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="memcached.constants" class="appendix">
 <h1>预定义常量</h1>

 <p class="simpara">下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。</p>
 <dl>
 

  
   <dt id="memcached.constants.opt-compression"><strong><code>Memcached::OPT_COMPRESSION</code></strong></dt>

   <dd>

    <p class="para">
    开启或关闭压缩功能。当开启的时候，item的值超过某个阈值（当前是100bytes）时，会首先对值进行压缩然后存储，并
    在获取该值时进行解压缩然后返回，使得压缩对应用层透明。
    </p>
    <p class="para">类型: <em>boolean</em>, 默认: <strong><code>TRUE</code></strong>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-serializer"><strong><code>Memcached::OPT_SERIALIZER</code></strong></dt>

   <dd>

    <p class="para">
    指定对于非标量值进行序列化的序列化工具。可用的值有<strong><code>Memcached::SERIALIZER_PHP</code></strong>
     和<strong><code>Memcached::SERIALIZER_IGBINARY</code></strong>。后者仅在memcached配置时开启
     <em>--enable-memcached-igbinary</em>选项并且
     <em>igbinary</em>扩展被加载时才有效。
    </p>
    <p class="para">类型: <em>integer</em>, 默认: <strong><code>Memcached::SERIALIZER_PHP</code></strong>.</p>
   </dd>

  

  
   <dt id="memcached.constants.serializer-php"><strong><code>Memcached::SERIALIZER_PHP</code></strong></dt>

   <dd>

    <p class="para">默认的PHP序列化工具（即serialize方法）。</p>
   </dd>

  

  
   <dt id="memcached.constants.serializer-igbinary"><strong><code>Memcached::SERIALIZER_IGBINARY</code></strong></dt>

   <dd>

    <p class="para"><a href="https://github.com/igbinary/igbinary" class="link external">&raquo;&nbsp;igbinary</a>序列化工具。它将php的数据结构
    存储为紧密的二进制形式，在时间和空间上都有所改进。
    </p>
   </dd>

  

  
   <dt id="memcached.constants.serializer-json"><strong><code>Memcached::SERIALIZER_JSON</code></strong></dt>

   <dd>

    <p class="para">JSON序列化，需要 PHP 5.2.10以上。</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-prefix-key"><strong><code>Memcached::OPT_PREFIX_KEY</code></strong></dt>

   <dd>

    <p class="para">
    可以用于为key创建“域”。这个值将会被作为每个key的前缀，它不能长于<em>128</em>个字符，
    并且将会缩短最大可允许的key的长度。这个前缀仅仅用于被存储的元素的key，而不会用于服务器key。
    </p>
    <p class="para">类型: <em>string</em>, 默认: <em>&quot;&quot;</em>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-hash"><strong><code>Memcached::OPT_HASH</code></strong></dt>

   <dd>

    <p class="para">
    指定存储元素key使用的hash算法。可用的值是<strong><code>Memcached::HASH_*</code></strong>系列的常量。
    每种hash算法都有它的优势和劣势，在你不了解或不确定哪种算法对你更有利时，请使用默认值。
    </p>
    <p class="para">类型: <em>integer</em>, 默认: <strong><code>Memcached::HASH_DEFAULT</code></strong></p>
   </dd>

  

  
   <dt id="memcached.constants.hash-default"><strong><code>Memcached::HASH_DEFAULT</code></strong></dt>

   <dd>

    <p class="para">默认的(Jenkins one-at-a-time)元素key hash算法</p>
   </dd>

  

  
   <dt id="memcached.constants.hash-md5"><strong><code>Memcached::HASH_MD5</code></strong></dt>

   <dd>

    <p class="para">md5元素key hash算法。</p>
   </dd>

  

  
   <dt id="memcached.constants.hash-crc"><strong><code>Memcached::HASH_CRC</code></strong></dt>

   <dd>

    <p class="para">CRC元素key hash算法。</p>
   </dd>

  

  
   <dt id="memcached.constants.hash-fnv1-64"><strong><code>Memcached::HASH_FNV1_64</code></strong></dt>

   <dd>

    <p class="para">FNV1_64元素key hash算法。</p>
   </dd>

  

  
   <dt id="memcached.constants.hash-fnv1a-64"><strong><code>Memcached::HASH_FNV1A_64</code></strong></dt>

   <dd>

    <p class="para">FNV1_64A元素key hash算法。</p>
   </dd>

  

  
   <dt id="memcached.constants.hash-fnv1-32"><strong><code>Memcached::HASH_FNV1_32</code></strong></dt>

   <dd>

    <p class="para">FNV1_32元素key hash算法。</p>
   </dd>

  

  
   <dt id="memcached.constants.hash-fnv1a-32"><strong><code>Memcached::HASH_FNV1A_32</code></strong></dt>

   <dd>

    <p class="para">FNV1_32A元素key hash算法。</p>
   </dd>

  

  
   <dt id="memcached.constants.hash-hsieh"><strong><code>Memcached::HASH_HSIEH</code></strong></dt>

   <dd>

    <p class="para">Hsieh元素key hash算法。</p>
   </dd>

  

  
   <dt id="memcached.constants.hash-murmur"><strong><code>Memcached::HASH_MURMUR</code></strong></dt>

   <dd>

    <p class="para">Murmur元素key hash算法。</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-distribution"><strong><code>Memcached::OPT_DISTRIBUTION</code></strong></dt>

   <dd>

    <p class="para">
    指定元素key分布到各个服务器的方法。当前支持的方法有余数分步法合一致性hash算法两种。一致性hash算法提供
    了更好的分配策略并且在添加服务器到集群时可以最小化缓存丢失。
    </p>
    <p class="para">类型: <em>integer</em>, 默认: <strong><code>Memcached::DISTRIBUTION_MODULA.</code></strong></p>
   </dd>

  

  
   <dt id="memcached.constants.distribution-modula"><strong><code>Memcached::DISTRIBUTION_MODULA</code></strong></dt>

   <dd>

    <p class="para">余数分布算法。</p>
   </dd>

  

  
   <dt id="memcached.constants.distribution-consistent"><strong><code>Memcached::DISTRIBUTION_CONSISTENT</code></strong></dt>

   <dd>

    <p class="para">一致性分布算法(基于libketama).</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-libketama-compatible"><strong><code>Memcached::OPT_LIBKETAMA_COMPATIBLE</code></strong></dt>

   <dd>

    <p class="para">
    开启或关闭兼容的libketama类行为。当开启此选项后，元素key的hash算法将会被设置为md5并且分布算法将会
    采用带有权重的一致性hash分布。这一点非常有用因为其他基于libketama的客户端（比如python，urby）在同样
    的服务端配置下可以透明的访问key。
    </p>
    <blockquote class="note"><p><strong class="note">Note</strong>: 
     <p class="para">
     如果你要使用一致性hash算法强烈建议开启此选项，并且这个选项可能在未来的发布版中被设置为默认开启。
     </p>
    </p></blockquote>
    <p class="para">类型: <em>boolean</em>, 默认: <strong><code>FALSE</code></strong>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-buffer-writes"><strong><code>Memcached::OPT_BUFFER_WRITES</code></strong></dt>

   <dd>

    <p class="para">
    开启或关闭I/O缓存。开启I/O缓存会导致存储命令不实际发送而是存储到缓冲区中。任意的检索数据操作都会导致
    缓存中的数据被发送到远程服务端。退出连接或关闭连接也会导致缓存数据被发送到远程服务端。
    </p>
    <p class="para">类型: <em>boolean</em>, 默认: <strong><code>FALSE</code></strong>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-binary-protocol"><strong><code>Memcached::OPT_BINARY_PROTOCOL</code></strong></dt>

   <dd>

    <p class="para">
    开启使用二进制协议。请注意这个选项不能在一个打开的连接上进行切换。
    </p>
    <p class="para">类型: <em>boolean</em>, 默认: <strong><code>FALSE</code></strong>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-no-block"><strong><code>Memcached::OPT_NO_BLOCK</code></strong></dt>

   <dd>

    <p class="para">
    开启或关闭异步I/O。这将使得存储函数传输速度最大化。
    </p>
    <p class="para">类型: <em>boolean</em>, 默认: <strong><code>FALSE</code></strong>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-tcp-nodelay"><strong><code>Memcached::OPT_TCP_NODELAY</code></strong></dt>

   <dd>

    <p class="para">
    开启或关闭已连接socket的无延迟特性（在某些幻境可能会带来速度上的提升）。
    </p>
    <p class="para">类型: <em>boolean</em>, 默认: <strong><code>FALSE</code></strong>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-socket-send-size"><strong><code>Memcached::OPT_SOCKET_SEND_SIZE</code></strong></dt>

   <dd>

    <p class="para">socket发送缓冲的最大值。</p>
    <p class="para">类型: <em>integer</em>, 默认: 根据不同的平台/内核配置不同</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-socket-recv-size"><strong><code>Memcached::OPT_SOCKET_RECV_SIZE</code></strong></dt>

   <dd>

    <p class="para">socket接收缓冲的最大值。</p>
    <p class="para">类型: <em>integer</em>, 默认: 根据不同的平台/内核配置不同</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-connect-timeout"><strong><code>Memcached::OPT_CONNECT_TIMEOUT</code></strong></dt>

   <dd>

    <p class="para">在非阻塞模式下这里设置的值就是socket连接的超时时间，单位是毫秒。</p>
    <p class="para">类型: <em>integer</em>, 默认: <em>1000</em>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-retry-timeout"><strong><code>Memcached::OPT_RETRY_TIMEOUT</code></strong></dt>

   <dd>

    <p class="para">
    等待失败的连接重试的时间，单位秒。
    </p>
    <p class="para">类型: <em>integer</em>, 默认: <em>0</em>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-send-timeout"><strong><code>Memcached::OPT_SEND_TIMEOUT</code></strong></dt>

   <dd>

    <p class="para">socket发送超时时间，单位毫秒。在这种情况下您不能使用非阻塞I/O，这将使得您仍然有数据会发送超时。</p>
    <p class="para">类型: <em>integer</em>, 默认: <em>0</em>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-recv-timeout"><strong><code>Memcached::OPT_RECV_TIMEOUT</code></strong></dt>

   <dd>

    <p class="para">socket读取超时时间，单位毫秒。在这种情况下您不能使用非阻塞I/O，这将使得您仍然有数据会读取超时。</p>
    <p class="para">类型: <em>integer</em>, 默认: <em>0</em>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-poll-timeout"><strong><code>Memcached::OPT_POLL_TIMEOUT</code></strong></dt>

   <dd>

    <p class="para">poll连接超时时间，单位毫秒。</p>
    <p class="para">类型: <em>integer</em>, 默认: <em>1000</em>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-cache-lookups"><strong><code>Memcached::OPT_CACHE_LOOKUPS</code></strong></dt>

   <dd>

    <p class="para">开启或禁用DNS查找缓存。</p>
    <p class="para">类型: <em>boolean</em>, 默认: <strong><code>FALSE</code></strong>.</p>
   </dd>

  

  
   <dt id="memcached.constants.opt-server-failure-limit"><strong><code>Memcached::OPT_SERVER_FAILURE_LIMIT</code></strong></dt>

   <dd>

    <p class="para">指定一个服务器连接的失败重试次数限制。在达到此数量的失败重连后此服务器将被从服务器池中移除。</p>
    <p class="para">类型: <em>integer</em>, 默认: <em>0</em>.</p>
   </dd>

  

  
   <dt id="memcached.constants.have-igbinary"><strong><code>Memcached::HAVE_IGBINARY</code></strong></dt>

   <dd>

    <p class="para">指示是否支持igbinary的序列化。</p>
    <p class="para">类型: <em>boolean</em>.</p>
   </dd>

  

  
   <dt id="memcached.constants.have-json"><strong><code>Memcached::HAVE_JSON</code></strong></dt>

   <dd>

    <p class="para">指示是否支持json的序列化。</p>
    <p class="para">类型: <em>boolean</em>.</p>
   </dd>

  

  
   <dt id="memcached.constants.get-preserve-order"><strong><code>Memcached::GET_PRESERVE_ORDER</code></strong></dt>

   <dd>

    <p class="para">一个用于<span class="function"><a href="memcached.getmulti.html" class="function">Memcached::getMulti()</a></span>和
     <span class="function"><a href="memcached.getmultibykey.html" class="function">Memcached::getMultiByKey()</a></span>的标记用以确保返回的key和请求的key顺序保持一致。
     不存在的key将会得到一个NULL值。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-success"><strong><code>Memcached::RES_SUCCESS</code></strong></dt>

   <dd>

    <p class="para">操作成功。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-failure"><strong><code>Memcached::RES_FAILURE</code></strong></dt>

   <dd>

    <p class="para">某种方式的操作失败。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-host-lookup-failure"><strong><code>Memcached::RES_HOST_LOOKUP_FAILURE</code></strong></dt>

   <dd>

    <p class="para">DNS查找失败。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-unknown-read-failure"><strong><code>Memcached::RES_UNKNOWN_READ_FAILURE</code></strong></dt>

   <dd>

    <p class="para">读取网络数据失败。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-protocol-error"><strong><code>Memcached::RES_PROTOCOL_ERROR</code></strong></dt>

   <dd>

    <p class="para">错误的memcached协议命令。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-client-error"><strong><code>Memcached::RES_CLIENT_ERROR</code></strong></dt>

   <dd>

    <p class="para">客户端错误。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-server-error"><strong><code>Memcached::RES_SERVER_ERROR</code></strong></dt>

   <dd>

    <p class="para">服务端错误。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-write-failure"><strong><code>Memcached::RES_WRITE_FAILURE</code></strong></dt>

   <dd>

    <p class="para">向网络写数据失败。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-data-exists"><strong><code>Memcached::RES_DATA_EXISTS</code></strong></dt>

   <dd>

    <p class="para">比较并交换值操作失败（cas方法）：尝试向服务端存储数据时由于自此连接最后一次取此key对应数据之后被改变导致失败。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-notstored"><strong><code>Memcached::RES_NOTSTORED</code></strong></dt>

   <dd>

    <p class="para">元素没有被存储，但并不是因为一个错误。这通常表明add（元素已存在）或replace（元素不存在）方式存储数据失败或者元素已经在一个删除序列中（延时删除）。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-notfound"><strong><code>Memcached::RES_NOTFOUND</code></strong></dt>

   <dd>

    <p class="para">元素未找到（通过get或cas操作时）。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-partial-read"><strong><code>Memcached::RES_PARTIAL_READ</code></strong></dt>

   <dd>

    <p class="para">局部网络数据读错误。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-some-errors"><strong><code>Memcached::RES_SOME_ERRORS</code></strong></dt>

   <dd>

    <p class="para">在多key获取的时候发生错误。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-no-servers"><strong><code>Memcached::RES_NO_SERVERS</code></strong></dt>

   <dd>

    <p class="para">服务器池空。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-end"><strong><code>Memcached::RES_END</code></strong></dt>

   <dd>

    <p class="para">结果集到结尾了。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-errno"><strong><code>Memcached::RES_ERRNO</code></strong></dt>

   <dd>

    <p class="para">系统错误。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-buffered"><strong><code>Memcached::RES_BUFFERED</code></strong></dt>

   <dd>

    <p class="para">操作被缓存。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-timeout"><strong><code>Memcached::RES_TIMEOUT</code></strong></dt>

   <dd>

    <p class="para">操作超时。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-bad-key-provided"><strong><code>Memcached::RES_BAD_KEY_PROVIDED</code></strong></dt>

   <dd>

    <p class="para">提供了无效的key。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-connection-socket-create-failure"><strong><code>Memcached::RES_CONNECTION_SOCKET_CREATE_FAILURE</code></strong></dt>

   <dd>

    <p class="para">创建网络socket失败。</p>
   </dd>

  

  
   <dt id="memcached.constants.res-payload-failure"><strong><code>Memcached::RES_PAYLOAD_FAILURE</code></strong></dt>

   <dd>

    <p class="para">不能压缩/解压缩或序列化/反序列化值。</p>
   </dd>

  

 </dl>

</div>
<hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="memcached.resources.html">资源类型</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="memcached.expiration.html">超时时间</a></div>
 <div class="up"><a href="book.memcached.html">Memcached</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
